/*   
 * Copyright (c) 2010-2020 ISCAS. All Rights Reserved.   
 *   
 * This software is the confidential and proprietary information of   
 * ISCAS. You shall not disclose such Confidential Information   
 * and shall use it only in accordance with the terms of the agreements   
 * you entered into with ISCAS.   
 *   
 */ 

package com.iot.ic.utils;


import java.text.SimpleDateFormat;


/**
* @Description: 校验类
* @author caiyang
* @date 2015年9月23日 上午9:59:02 
* @version V1.0  
 */
public final class CheckUtil {

	
	/**
	 * 构造方法
	 */
	private CheckUtil() {
	}

	/**
	 * 数字校验
	 * @param number 待校验数字
	 * @param intMax 最大整数位
	 * @param decMax 最大小数位(没有小数位写0)
	 * @return 校验结果 满足true 不满足false
	 */
	public static boolean isNumber(String number, int intMax, int decMax) {
		boolean flag = false;
		if (StringUtil.isEmpty(number)) {
			flag = true;
		} else if (decMax == 0) {
			flag = number.matches("^[0-9]+$") && number.length() <= intMax;
		} else {
			String[] num = number.split("\\.");
			if (num.length < 2) {
				flag = number.matches("^[0-9]+\\.{0,1}[0-9]*") && num[0].length() <= intMax;
			} else {
				flag = number.matches("^[0-9]+\\.{0,1}[0-9]*") && num[0].length() <= intMax && num[1].length() <= decMax;
			}
		}

		return flag;
	}

	/**
	 * 字节数校验（中文两字节）
	 * @param str 待校验字符串
	 * @param bitMax 最大字节数
	 * @param equal 是否定长
	 * @return 校验结果 满足true 不满足false
	 */
	public static boolean byteCount(String str, int bitMax, boolean equal) {
		boolean flag = false;
		if (StringUtil.isEmpty(str)) {
			flag = true;
		} else {
			String temp = str;
			int lng = temp.replaceAll("[^\\x00-\\xff]", "**").length();
			if (equal) {
				flag = lng == bitMax;
			} else {
				flag = lng <= bitMax;
			}
		}

		return flag;
	}

	/**
	 * 日期校验
	 * @param str 待校验日期
	 * @param format 日期格式
	 * @return 校验结果 满足true 不满足false
	 */
	public static boolean isDate(String str, String format) {
		boolean flag = false;
		if (StringUtil.isEmpty(str)) {
			flag = true;
		} else {
			SimpleDateFormat sdf = new SimpleDateFormat(format);
			try {
				sdf.setLenient(false);
				sdf.parse(str);
				flag = true;
			} catch (Exception e) {
				flag = false;
			}
		}

		return flag;
	}

	/**
	 * 电话校验
	 * @param tel 待校验电话
	 * @return 校验结果 满足true 不满足false
	 */
	public static boolean isTel(String tel) {
		boolean flag = false;
		if (StringUtil.isEmpty(tel)) {
			flag = true;
		} else {
			flag = tel.matches("^[0-9-+\\(\\) ]*$");
		}

		return flag;
	}

	/**
	 * 邮箱校验
	 * @param mail 待校验邮箱
	 * @return 校验结果 满足true 不满足false
	 */
	public static boolean isMail(String mail) {
		boolean flag = false;
		if (StringUtil.isEmpty(mail)) {
			flag = true;
		} else {
			flag = mail.matches("^([_a-zA-Z0-9-]+)(\\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\\.)+([a-zA-Z]{2,3})$");
		}

		return flag;
	}

}